<?php
/*
 * 
 * 
 1. mysql有以下几种日志：
 
	   错误日志：     -log-err
	   查询日志：     -log
	   慢查询日志:   -log-slow-queries
	   更新日志:     -log-update
	   二进制日志： -log-bin

2. 基本操作

	是否启用了日志
	mysql>show variables like 'log_%';
	
	怎样知道当前的日志
	mysql> show master status;
	
	顯示二進制日志數目
	mysql> show master logs;
	
	看二进制日志文件用mysqlbinlog
	
	shell>mysqlbinlog mail-bin.000001（地址要用绝对地址）
	或者shell>mysqlbinlog mail-bin.000001 | tail 
	
	
3. 二进制日志默认放在 data下

	尽量换个独立的文件夹，独立于mysql的文件夹
	
	默认的命名为 HOSTNAME-bin（mysql-bin.000001）
	
	重启一次就会生成一个 
	
	
4. 常用查询方式

	1) 通过时间查询

	mysqlbinlog  --start-datetime="2010-11-20 00:00:00"  --stop-datetime="2010-11-21 00:00:00" 
		D:\mysql5\data\mysql-bin.000001
		
	
	2) 最常用查询
	
	update的显示：  从MySQL 5.1.28开始，mysqlbinlog多了个参数--verbose(或-v)，
	将改动生成带注释的语句，如果使用两次这个参数(如-v -v)，会生成字段的类型、长度、是否为null等属性信息
	
	去掉BINLOG开头的信息 ： 加--base64-output=DECODE-ROWS参数
	
	mysqlbinlog.exe -v -v --base64-output=DECODE-ROWS E:\wamp\bin\data\mysql-bin.000018
	
5. 由于无法查看或者乱码， 可以将日志导入txt文件 

	mysqlbinlog D:\mysql5\data\mysql-bin.000001  > D:\1.xtx
	
	可以在里面看到里面的操作的编号（行号 ） at 123
	
	
6. 恢复   / 恢复数据之前最好停止数据库
	
	mysqlbinlog.exe D:\mysql\data\mysql-bin.000147 --stop-position=1200|mysql -uroot -p
	mysqlbinlog.exe D:\mysql\data\mysql-bin.000147 --start-position=1400|mysql -uroot -p
	
	上面的第1行将恢复到停止位置为止的所有事务。下一行将恢复从给定的起始位置直到二进制日志结束的所有事务。
	因为mysqlbinlog的输出包括每个SQL语句记录之前的SET TIMESTAMP语句，恢复的数据和相关MySQL日志将反应事务执行的原时间。
	
	
	mysqlbinlog有一些选项可以使用,简单说明常用选项:

	-d,--database=name :指定数据库名称,只列出指定数据库的操作.
	
	-D, --disable-log-bin :执行恢复的时候,禁止二进制日志.可以防止同一台MySQL加上-t时进入死循环
	
	-o,--offset=n :忽略掉日志前n行命令
	
	-r,--result-file=name :将输出日志到指定文件
	
	-R, --read-from-remote-server :从一个MySQL服务器上读取二进制
	
	-s,--short-form :显示简单格式,省略一些信息
	
	-S, --socket=name  :socket文件连接path.
	
	-t, --to-last-log  :和-R一起使用,在二进制日志结束的时候并不会停止,而是在MySQL服务器最后生成的binlog结束,如果输出和输入都在一台MySQL上可能会导致死循环.
	
	--set-charset=char-name :在输出文本格式的时候,在第一行加上set names char-name.

	--start-datetime=# --stop-datetime=# :指定输出起始日期的日志.

	--start-position=# --stop-position=# :指定起始日志的位置. 
	
	
 